package IU;

import Entidades.Contrato;
import Entidades.Detallecontrato;
import java.util.List;
import java.util.Vector;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import utiles.Validador;

import Controladores.CtrlLocalidad;
import Controladores.CtrlPais;
import Controladores.CtrlProveedor;
import Controladores.CtrlProvincia;
import Controladores.CtrlContrato;
import Controladores.CtrlDetallecontrato;
import Controladores.CtrlDetallerecepcion;
import Controladores.CtrlEstadocontrato;
import Controladores.CtrlTransporte;
import Controladores.CtrlTransportista;
import Controladores.CtrlRemito;
import Controladores.CtrlDetalleremito;
import Controladores.CtrlEmpaque;
import Controladores.CtrlRecepcion;
import Controladores.CtrlCargaEmpaque;
import Controladores.CtrlEstadotransporte;
import Controladores.CtrlProducto;
import Controladores.CtrlEstadoespera;
import Controladores.CtrlAMBOperario;
import Entidades.Cargaempaque;
import Entidades.Detalleremito;
import Entidades.Estadocontrato;
import Entidades.Estadooperario;
import Entidades.Operario;
import Entidades.Proveedor;
import Entidades.Transporte;
import Entidades.Transportista;
import Entidades.Producto;
import Entidades.Remito;
import Entidades.Recepcion;
import Entidades.Detallerecepcion;
import Entidades.Empaque;
import Entidades.Estadoespera;
import java.text.SimpleDateFormat;


import java.util.Collection;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import javax.swing.JComboBox;
import javax.swing.table.DefaultTableModel;

public class CargarRemito extends javax.swing.JFrame {

    String telefono1;
    String telefono2;
    Proveedor proveedor;
    TablaPersonalizada tableModel;
    private List listap;
    CtrlProveedor controladorprovee;
    CtrlPais controladorpais;
    CtrlProvincia controladorprov;
    CtrlLocalidad controladorlocal;
    CtrlContrato controladorcontrato;
    CtrlDetallecontrato controladordetallecontr;
    CtrlEstadocontrato controladorestadocontrato;
    CtrlTransporte controladortransporte;
    CtrlTransportista controladortransportista;
    CtrlRemito controladoremito;
    CtrlDetalleremito controladordetremito;
    CtrlRecepcion controladorrecepcion;
    CtrlDetallerecepcion controladordetrecepcion;
    CtrlEmpaque controladorempaque;
    CtrlCargaEmpaque controladorcargaempaque;
    CtrlEstadotransporte controladorestadotransp;
    CtrlProducto controladorproducto;
    CtrlEstadoespera controladorestadoespera;
    CtrlAMBOperario controladoroperario;
    Proveedor o;
    Validador validador;
    Collection<Detallecontrato> detalleCollection = new ArrayList<Detallecontrato>();
    Collection<Remito> collectionRemito = new ArrayList<Remito>();
    Estadooperario miestado = null;
    Estadocontrato e = null;
    Estadocontrato estadocontrato = null;
    //  Estadotransporte et = null;
    String estado = "pendiente";
    Contrato cont;
    Proveedor miprov = null;
    Proveedor proveedorSel = null;
    Producto producto;
    Remito re;
    private List<Contrato> listapedpend = new ArrayList<Contrato>();
    //private ArrayList<Contrato> listapedpend = new ArrayList();
    List<Transporte> listatransporte = new ArrayList<Transporte>();
    List<Transportista> listaTransportista = new ArrayList<Transportista>();
    List<Detallecontrato> detalles = new ArrayList<Detallecontrato>();
    List<Detalleremito> detallesremito = new ArrayList<Detalleremito>();
    Vector<Detallerecepcion> detallesrecepcion = new Vector<Detallerecepcion>();
    Vector<Detalleremito> detallesrem = new Vector<Detalleremito>();
    Vector<Empaque> listaempaque = new Vector<Empaque>();
    List<Empaque> listaempaquess = new ArrayList<Empaque>();
    List<Remito> listaremito = new ArrayList<Remito>();
    List<Remito> listaremitoc = new ArrayList<Remito>();
    List<Detalleremito> listadetrem = new ArrayList<Detalleremito>();
    Transporte transporteSel;
    Transportista transportistaSel;
    Contrato contratoSel;
    Empaque empaqueSel;
    String fechaAlta;
    float cantidadcontrato;
    Remito remito = null;
    String nroRemito;
    Recepcion recepcion;
    int cuartel;
    int nrobines;
    String fechafinca;
    int cantidadempaque;
    Operario operario;
    Empaque empaque;
    Cargaempaque cargaempaque;
    int nroContrato;
    int idDetCont;
    Estadocontrato estadoContFaltante;
    Estadocontrato estadoContCompleto;
    boolean faltante;
    Detallecontrato detallecontrato;
    List<Contrato> listac;
    List<Detallecontrato> listad;
    Estadoespera estadoespera;
    private String usuarios;

    public CargarRemito(Proveedor miprov, List<Contrato> listacontratos, List<Detallecontrato> listadetallecontratos, String usuarios) {

        initComponents();
        this.usuarios = usuarios;
        jTextFieldUsuario.setText(usuarios);
        System.out.println("dentro de cargarremito");
        proveedorSel = miprov;
        listac = listacontratos;
        listad = listadetallecontratos;
        System.out.println("listac " + listac.size());
        Contrato contrato = listac.get(0);// acá tengo qeu hacer esto pero siempre va a ser el mismo proveedor
        System.out.println("luego de tomar el primer contrato");
        contratoSel = contrato;
        //  detallecontrato = detallecontrat;

        jtextFieldpropietariouva.setText(contrato.getProveedor().getRazonSocialProveedor());
        jtextFielcuilpropietario.setText(contrato.getProveedor().getCuitProveedor());
        controladorprovee = new CtrlProveedor();

        controladortransporte = new CtrlTransporte();
        controladortransportista = new CtrlTransportista();
        controladoremito = new CtrlRemito();
        controladordetremito = new CtrlDetalleremito();
        controladorrecepcion = new CtrlRecepcion();
        controladordetrecepcion = new CtrlDetallerecepcion();
        controladorempaque = new CtrlEmpaque();
        controladorestadotransp = new CtrlEstadotransporte();
        controladorproducto = new CtrlProducto();
        controladorestadoespera = new CtrlEstadoespera();
        controladoroperario = new CtrlAMBOperario();
        controladorcargaempaque = new CtrlCargaEmpaque();

        System.out.println("dentro de cargar remito");

        //cargarComboRazon();
        cargarComboTransportes();
        cargarComboTransportistas();
        cargarEmpaque();
//        // Collection<Detallecontrato> detalles=contrato.getDetallecontratoCollection();
        cargarTabla(listad);

    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        GestorPesajeJpaPU2EntityManager = java.beans.Beans.isDesignTime() ? null : javax.persistence.Persistence.createEntityManagerFactory("GestorPesajeJpaPU2").createEntityManager();
        empaqueQuery = java.beans.Beans.isDesignTime() ? null : GestorPesajeJpaPU2EntityManager.createQuery("SELECT e FROM Empaque e");
        empaqueList = java.beans.Beans.isDesignTime() ? java.util.Collections.emptyList() : empaqueQuery.getResultList();
        transporteQuery = java.beans.Beans.isDesignTime() ? null : GestorPesajeJpaPU2EntityManager.createQuery("SELECT t FROM Transporte t");
        transporteList = java.beans.Beans.isDesignTime() ? java.util.Collections.emptyList() : transporteQuery.getResultList();
        jTabbedPane1 = new javax.swing.JTabbedPane();
        jPanel1 = new javax.swing.JPanel();
        jButton3 = new javax.swing.JButton();
        jPanel2 = new javax.swing.JPanel();
        jLabel9 = new javax.swing.JLabel();
        jtextFieldpropietariouva = new javax.swing.JTextField();
        jLabel8 = new javax.swing.JLabel();
        jtextFielcuilpropietario = new javax.swing.JTextField();
        jLabel20 = new javax.swing.JLabel();
        jLabel22 = new javax.swing.JLabel();
        jLabel23 = new javax.swing.JLabel();
        jComboBoxTransporte = new javax.swing.JComboBox();
        jComboBoxTransportista = new javax.swing.JComboBox();
        jLabel2 = new javax.swing.JLabel();
        jTextFieldNroRemito = new javax.swing.JTextField();
        jDateChooserSelectorFecha = new com.toedter.calendar.JDateChooser();
        jLabel1 = new javax.swing.JLabel();
        jTextFieldTaraTransporte = new javax.swing.JTextField();
        jButtonAltaTransporte = new javax.swing.JButton();
        jButtonAltaTransportista = new javax.swing.JButton();
        jPanel4 = new javax.swing.JPanel();
        jTextFieldUsuario = new javax.swing.JTextField();
        jPanel3 = new javax.swing.JPanel();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTableDetallesContrato = new javax.swing.JTable();
        jButtonAceptar = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setTitle(" Remito - Sistema Gestor de Pesaje para Bodegas");

        jTabbedPane1.setForeground(new java.awt.Color(102, 0, 102));
        jTabbedPane1.setFont(new java.awt.Font("Segoe UI", 3, 12));

        jButton3.setFont(new java.awt.Font("Segoe UI", 3, 12));
        jButton3.setForeground(new java.awt.Color(102, 0, 102));
        jButton3.setText("Salir");
        jButton3.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton3ActionPerformed(evt);
            }
        });

        jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.LOWERED), "Datos", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Segoe UI", 3, 12), new java.awt.Color(102, 0, 102))); // NOI18N
        jPanel2.setForeground(new java.awt.Color(102, 0, 102));
        jPanel2.setFont(new java.awt.Font("Segoe UI", 3, 12));

        jLabel9.setFont(new java.awt.Font("Segoe UI", 1, 11));
        jLabel9.setText("Propietario de la Uva:");

        jtextFieldpropietariouva.setEditable(false);
        jtextFieldpropietariouva.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.LOWERED));

        jLabel8.setFont(new java.awt.Font("Segoe UI", 1, 11));
        jLabel8.setText("CUIT/CUIL Propietario:");

        jtextFielcuilpropietario.setEditable(false);
        jtextFielcuilpropietario.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.LOWERED));

        jLabel20.setFont(new java.awt.Font("Segoe UI", 1, 11));
        jLabel20.setText("Patente Transporte:");

        jLabel22.setFont(new java.awt.Font("Segoe UI", 1, 11));
        jLabel22.setText("Documento Transportista:");

        jLabel23.setFont(new java.awt.Font("Segoe UI", 1, 11));
        jLabel23.setText("Fecha Egreso Finca:");

        jComboBoxTransporte.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.LOWERED));
        jComboBoxTransporte.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                jComboBoxTransporteMouseClicked(evt);
            }
            public void mousePressed(java.awt.event.MouseEvent evt) {
                jComboBoxTransporteMousePressed(evt);
            }
        });
        jComboBoxTransporte.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jComboBoxTransporteActionPerformed(evt);
            }
        });
        jComboBoxTransporte.addFocusListener(new java.awt.event.FocusAdapter() {
            public void focusGained(java.awt.event.FocusEvent evt) {
                jComboBoxTransporteFocusGained(evt);
            }
        });

        jComboBoxTransportista.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.LOWERED));
        jComboBoxTransportista.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jComboBoxTransportistaActionPerformed(evt);
            }
        });

        jLabel2.setFont(new java.awt.Font("Segoe UI", 1, 11));
        jLabel2.setText("Remito Número:");

        jTextFieldNroRemito.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.LOWERED));

        jDateChooserSelectorFecha.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.LOWERED));

        jLabel1.setFont(new java.awt.Font("Segoe UI", 1, 11));
        jLabel1.setText("Tara Transporte:");

        jTextFieldTaraTransporte.setEditable(false);
        jTextFieldTaraTransporte.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.LOWERED));

        jButtonAltaTransporte.setFont(new java.awt.Font("Segoe UI", 3, 12));
        jButtonAltaTransporte.setForeground(new java.awt.Color(102, 0, 102));
        jButtonAltaTransporte.setText("Alta Transporte");
        jButtonAltaTransporte.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonAltaTransporteActionPerformed(evt);
            }
        });

        jButtonAltaTransportista.setFont(new java.awt.Font("Segoe UI", 3, 12));
        jButtonAltaTransportista.setForeground(new java.awt.Color(102, 0, 102));
        jButtonAltaTransportista.setText("Alta Transportista");
        jButtonAltaTransportista.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonAltaTransportistaActionPerformed(evt);
            }
        });

        jPanel4.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.LOWERED), "Usuario Registrado", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Segoe UI", 3, 12), new java.awt.Color(102, 0, 102))); // NOI18N

        jTextFieldUsuario.setEditable(false);
        jTextFieldUsuario.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.LOWERED));

        javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4);
        jPanel4.setLayout(jPanel4Layout);
        jPanel4Layout.setHorizontalGroup(
            jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel4Layout.createSequentialGroup()
                .addContainerGap(27, Short.MAX_VALUE)
                .addComponent(jTextFieldUsuario, javax.swing.GroupLayout.PREFERRED_SIZE, 152, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap())
        );
        jPanel4Layout.setVerticalGroup(
            jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel4Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jTextFieldUsuario, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(28, Short.MAX_VALUE))
        );

        javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
        jPanel2.setLayout(jPanel2Layout);
        jPanel2Layout.setHorizontalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jLabel9)
                            .addComponent(jLabel2))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                            .addComponent(jTextFieldNroRemito, javax.swing.GroupLayout.PREFERRED_SIZE, 134, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(jtextFieldpropietariouva, javax.swing.GroupLayout.DEFAULT_SIZE, 134, Short.MAX_VALUE))
                        .addGap(18, 18, 18)
                        .addComponent(jLabel8)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jtextFielcuilpropietario, javax.swing.GroupLayout.PREFERRED_SIZE, 131, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jLabel20)
                            .addComponent(jLabel22)
                            .addComponent(jLabel23))
                        .addGap(36, 36, 36)
                        .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                            .addComponent(jComboBoxTransportista, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(jComboBoxTransporte, 0, 195, Short.MAX_VALUE)
                            .addComponent(jDateChooserSelectorFecha, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                        .addGap(52, 52, 52)
                        .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(jPanel2Layout.createSequentialGroup()
                                .addComponent(jLabel1)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(jTextFieldTaraTransporte, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addGroup(jPanel2Layout.createSequentialGroup()
                                .addGap(88, 88, 88)
                                .addComponent(jButtonAltaTransporte, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))))
                .addGap(34, 34, 34)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jButtonAltaTransportista)
                    .addComponent(jPanel4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(24, 24, 24))
        );
        jPanel2Layout.setVerticalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jLabel9)
                            .addComponent(jtextFieldpropietariouva, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(jLabel8)
                            .addComponent(jtextFielcuilpropietario, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addGap(6, 6, 6)
                        .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jLabel2)
                            .addComponent(jTextFieldNroRemito, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addGap(18, 18, 18)
                        .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jLabel20)
                            .addComponent(jComboBoxTransporte, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(jLabel1)
                            .addComponent(jTextFieldTaraTransporte, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jLabel22)
                            .addComponent(jComboBoxTransportista, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
                    .addComponent(jPanel4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jLabel23)
                            .addComponent(jDateChooserSelectorFecha, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addGap(37, 37, 37))
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jButtonAltaTransporte)
                            .addComponent(jButtonAltaTransportista))
                        .addContainerGap())))
        );

        jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.LOWERED), "Datos", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Segoe UI", 3, 12), new java.awt.Color(102, 0, 102))); // NOI18N
        jPanel3.setForeground(new java.awt.Color(102, 0, 102));
        jPanel3.setFont(new java.awt.Font("Segoe UI", 3, 12));

        jTableDetallesContrato.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.LOWERED));
        jTableDetallesContrato.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "Contrato", "Nro Detalle Contrato", "Producto", "Clasificación", "Cuartel", "Cantidad Producto", "Tipo Empaque", "Cantidad Empaque"
            }
        ) {
            Class[] types = new Class [] {
                java.lang.Object.class, java.lang.Object.class, java.lang.Object.class, java.lang.Object.class, java.lang.Integer.class, java.lang.Float.class, java.lang.Object.class, java.lang.Integer.class
            };
            boolean[] canEdit = new boolean [] {
                false, false, false, true, false, true, true, true
            };

            public Class getColumnClass(int columnIndex) {
                return types [columnIndex];
            }

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        jTableDetallesContrato.setColumnSelectionAllowed(true);
        jTableDetallesContrato.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                jTableDetallesContratoMouseClicked(evt);
            }
        });
        jScrollPane1.setViewportView(jTableDetallesContrato);
        jTableDetallesContrato.getColumnModel().getSelectionModel().setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);

        javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
        jPanel3.setLayout(jPanel3Layout);
        jPanel3Layout.setHorizontalGroup(
            jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel3Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 864, Short.MAX_VALUE)
                .addContainerGap())
        );
        jPanel3Layout.setVerticalGroup(
            jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel3Layout.createSequentialGroup()
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 117, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(28, Short.MAX_VALUE))
        );

        jButtonAceptar.setFont(new java.awt.Font("Segoe UI", 3, 12));
        jButtonAceptar.setForeground(new java.awt.Color(102, 0, 102));
        jButtonAceptar.setText("Aceptar");
        jButtonAceptar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonAceptarActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addContainerGap())
                    .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
                        .addComponent(jButtonAceptar)
                        .addGap(18, 18, 18)
                        .addComponent(jButton3)
                        .addGap(19, 19, 19))))
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jButton3)
                    .addComponent(jButtonAceptar))
                .addGap(24, 24, 24))
        );

        jTabbedPane1.addTab("Cargar Datos Remito", jPanel1);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jTabbedPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 921, Short.MAX_VALUE)
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addComponent(jTabbedPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 501, Short.MAX_VALUE)
                .addGap(52, 52, 52))
        );

        java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
        setBounds((screenSize.width-957)/2, (screenSize.height-589)/2, 957, 589);
    }// </editor-fold>//GEN-END:initComponents

    private void refresh() {
    }

    public void actualizarDatos(Proveedor proveedorSel) {
    }

    //acá paso los contratos porque si son detalles son listas de detalles muchos
    private void cargarTabla(List<Detallecontrato> detalles) {

        try {
            listaempaquess = controladorempaque.buscarTodosEmpaque();
            // listaempaque=(Vector) listaempaquess;
        } catch (Exception e) {
        }

        javax.swing.table.TableColumn column = jTableDetallesContrato.getColumnModel().getColumn(6);
        JComboBox comboBox = new JComboBox(listaempaque);
        //add your stuff in an ArrayList called list to the ComboBox as Strings. .
        for (int i = 0; i < listaempaquess.size(); i++) {
            comboBox.addItem(listaempaquess.get(i).getNombreEmpaque());
        }
        column.setCellEditor(new javax.swing.DefaultCellEditor(comboBox));

        DefaultTableModel modelo = (DefaultTableModel) jTableDetallesContrato.getModel();

        System.out.println("tamaño de detalles  " + detalles.size());

        System.out.println("dentro de cargar tabla");

        for (int i = 0; i < detalles.size(); i++) {
            Vector fila = new Vector();

            Detallecontrato detallecontrat = detalles.get(i);
            fila.add(detallecontrat.getContrato().getNumeroContrato());
            fila.add(detallecontrat.getIdDetalleContrato());
            System.out.println("nro contrato " + detallecontrat.getContrato().getNumeroContrato());
            fila.add(detallecontrat.getProducto().getNombreProducto());
            fila.add(detallecontrat.getProducto().getClasificacionproducto().getNombreclasificacion());
            fila.add(detallecontrat.getCuartel());
            fila.add(detallecontrat.getCantidad());
            //  fila.add(comboBox);
            fila.add("BIN");
            fila.add(0);

            System.out.println("nro detalle contrato " + detallecontrat.getIdDetalleContrato());

            modelo.addRow(fila);
            this.jTableDetallesContrato.setModel(modelo);

        }

    }

    private void limpiarCampos() {
//        jTextFieldapellido1.setText("");
//        jTextFieldnombre1.setText("");
//        jTextFielddireccion1.setText("");
//        jTextFieldcodigoPostal1.setText("");
//        jTextFieldcuit1.setText("");
//        jTextFieldnroInv1.setText("");
//        jTextFieldtelefono3.setText("");
//        jTextFieldtelefono4.setText("");
    }

private void jComboBoxTransporteActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jComboBoxTransporteActionPerformed
    System.out.println("en action performed ");
    // jComboBoxTransporte.removeAllItems();

    jTextFieldTaraTransporte.setText("");
    //  jTextFieldTaraAcoplado.setText("");
    Object estetransporte = jComboBoxTransporte.getSelectedItem();
    String nombretransporte = estetransporte.toString();//
    System.out.println("nombretransporte" + nombretransporte);
    try {
        transporteSel = controladortransporte.buscarTransportePatente(nombretransporte);
    } catch (Exception e) {
        System.out.println("no encontro el transporte que le pase");
    } // TODO add your handling code here:
    mostrarTaraTransporte(transporteSel.getTaraTransporte());

}//GEN-LAST:event_jComboBoxTransporteActionPerformed

private void jButtonAceptarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonAceptarActionPerformed

    ////////////////VALIDAR FECHA FINCA ES MAYOR A FECHA ACTUAL DEBE SER MENOR O IGUAL
    try {// fecha debe ser menor o igual a la fecha actual;
        String formato = "dd/MM/yyyy";
        Date date = jDateChooserSelectorFecha.getDate();
        SimpleDateFormat sdf = new SimpleDateFormat(formato);
        fechafinca = sdf.format(date);
        int año = jDateChooserSelectorFecha.getCalendar().get(Calendar.YEAR);
        int mes = jDateChooserSelectorFecha.getCalendar().get(Calendar.MONTH) + 1;
        int dia = jDateChooserSelectorFecha.getCalendar().get(Calendar.DAY_OF_MONTH);
        System.out.println("" + dia);
        System.out.println("" + mes);
        System.out.println("" + año);
    } catch (NullPointerException ex) {
        //           JOptionPane.showMessageDialog(this, "Debe seleccionar una fecha", "Error!", JOptionPane.INFORMATION_MESSAGE);
        //REMITO
    }
    nroRemito = jTextFieldNroRemito.getText();
    //if (nroRemito.equals("")) {
    //    JOptionPane.showMessageDialog(this, "Debe ingresar el número de remito", "Error!", JOptionPane.INFORMATION_MESSAGE);

    // } else {
    int cantfilas = jTableDetallesContrato.getModel().getRowCount();


    for (int f = 0; f < cantfilas; f++) {

        int fila = f;


//CONTRATO
        nroContrato = Integer.parseInt(jTableDetallesContrato.getValueAt(fila, 0).toString());
//ID DETALLECONTRATO
        String nrodtcontr = jTableDetallesContrato.getValueAt(fila, 1).toString();
        idDetCont = Integer.parseInt(nrodtcontr);
//PRODUCTO
        String product = jTableDetallesContrato.getValueAt(fila, 2).toString();
        System.out.println("producto:  " + jTableDetallesContrato.getValueAt(fila, 2));
        try {
            producto = controladorproducto.buscarProductoNombre(product);
            System.out.println("#### Encontró el producto #####");
        } catch (Exception e) {
            System.out.println("No encontró el producto " + e);
        }
//CLASIFICACION
        String clasificacion = jTableDetallesContrato.getValueAt(fila, 3).toString();
        System.out.println("clasificacion:  " + jTableDetallesContrato.getValueAt(fila, 3));
//CUARTEL
        String cuartels = jTableDetallesContrato.getValueAt(fila, 4).toString();
        System.out.println("cuartel:  " + jTableDetallesContrato.getValueAt(fila, 4));
        cuartel = Integer.parseInt(cuartels);
//CANTIDAD
        String cant = jTableDetallesContrato.getValueAt(fila, 5).toString();
        float cantidad = Float.parseFloat(cant);
        System.out.println("cantidad producto:  " + jTableDetallesContrato.getValueAt(fila, 5));
///EMPAQUE
        Object empaque = jTableDetallesContrato.getValueAt(fila, 6);
        String nombreempaque = empaque.toString();
        try {
            empaqueSel = controladorempaque.buscarEmpaqueNombre(nombreempaque);
            System.out.println("#### Encontró el empaque #####");
        } catch (Exception e) {
            System.out.println("No encontró el empaque " + e);
        }
//CANTIDAD DE EMPAQUE
        Object cantemp = jTableDetallesContrato.getValueAt(fila, 7);
        String cantidademp = cantemp.toString();
        cantidadempaque = Integer.parseInt(cantidademp);
//VALIDAR DATOS DE ENTRADA

        if (validar(nroRemito, fechafinca, cant, cantidademp) == true) {

            nroContrato = contratoSel.getNumeroContrato();

            Integer i = (Integer) jTableDetallesContrato.getValueAt(fila, 0);
            Contrato c = new Contrato(i);

            nroRemito = jTextFieldNroRemito.getText();

            fechaAlta = Validador.getInstance().obtenerFechaSistema();
///////////
//DETALLE REMITO
//////////
            Detalleremito dr = new Detalleremito();
            dr.setProducto(producto);
            dr.setCantidadProducto(cantidad);
            dr.setRemito(re);
            System.out.println("boton agregar antes de llamar alcontrolador para que guarde el detalle");
            controladordetremito.guardarDetalleremito(dr);

            System.out.println("guardó detalle remito");
            System.out.println("boton agregar ddespues de guardar detalle");

            detallesrem.add(dr);

//        Remito re = new Remito(nroRemito, fechafinca, transporteSel, contratoSel, proveedorSel, detallesrem);
//        controladoremito.guardarRemito(re);
//        System.out.println("#################  creo remito#####################");
//
//        JOptionPane.showMessageDialog(this, "El Remito ha sido guardado exitosamente!", "Remito", JOptionPane.INFORMATION_MESSAGE);



            try {
                estadoespera = controladorestadoespera.buscarEstadoesperaNombre("enEsperaControlCalidad");

            } catch (Exception e) {
                System.out.println("No encontró el estado espera");
            }

            Detallerecepcion drecep = new Detallerecepcion();
            //Detallerecepcion(cuartel, cantidadempaque, producto, recepcion, empaqueSel, null, null, null, estadoespera);
            drecep.setCuartel(cuartel);
            drecep.setNumeroBines(cantidadempaque);

            drecep.setProducto(producto);
            drecep.setRecepcion(recepcion);
            drecep.setEmpaque(empaqueSel);
            drecep.setEstadoespera(estadoespera);
            drecep.setStockproducto(null);
            drecep.setLagar(null);
            drecep.setPesajeentrada(null);
            drecep.setPesajesalida(null);
            drecep.setCondicion(null);
            try {
                controladordetrecepcion.guardarDetallerecepcion(drecep);
            } catch (Exception e) {
                System.out.println(e);
            }
            detallesrecepcion.add(drecep);
            ////


            try {
                operario = controladoroperario.buscarOperarioApellido(usuarios);
            } catch (Exception e) {
                System.out.println("No encontró el operario");
            }


            cargaempaque = new Cargaempaque();
            cargaempaque.setFechaHoraCargaEmpaque(fechaAlta);
            cargaempaque.setCantEmpaquesCargados(cantidadempaque);
            cargaempaque.setOperario(operario);
            cargaempaque.setTransporte(transporteSel);
            cargaempaque.setEmpaque(empaqueSel);
            try {
                controladorcargaempaque.guardarCargaEmpaque(cargaempaque);


            } catch (Exception e) {
                System.out.println("no pudo crear carga empaque " + e);


            }
            ////////

            // controladordetrecepcion.guardarDetallerecepcion(drecep);

            Object estetransportista = jComboBoxTransportista.getSelectedItem();
            String transportista = estetransportista.toString();
            String tipodoc = transportista.substring(0, 3);

            System.out.println("tipodoc " + tipodoc);

            String nrodoc = transportista.substring(4, 12);
            System.out.println("nrodoc " + nrodoc);
            //int nombretransportista = Integer.parseInt(estetransportista.toString());//

            int numero = Integer.parseInt(nrodoc);

            try {
                transportistaSel = controladortransportista.buscarTransportista_X_nroDocumento(numero);
                System.out.println("transportistaSel " + transportistaSel);
            } catch (Exception e) {
                System.out.println("No encontro el transportista");

            } //ACÁ DEBERIA BUSCAR TAMBIEN EL TIPO DE DOCUMENTO y ver si es el mismo objeto que tiene el numero
            //  CAMBIAR EL ESTADO DEL TRANSPORTE A EN ESPERA CONTTROL DE CALIDAD
            try {
                estadoespera = controladorestadoespera.buscarEstadoesperaNombre("enEsperaControlCalidad");
                System.out.println("encontró el estado espera enEsperaControlCalidad");
            } catch (Exception e) {
                System.out.println("No trajo el estado transporte");
            }
            transporteSel.setEstadoespera(estadoespera);


            // }//fin del for de c
            // fin del for del f



            re = new Remito();


            re.setContrato(contratoSel);
            re.setFechaHoraEgresoFinca(fechafinca);
            re.setNumeroRemito(nroRemito);
            re.setProveedor(proveedorSel);
            re.setDetalleremitoCollection(detallesrem);
            re.setTransporte(transporteSel);

            try {
                controladoremito.guardarRemito(re);
                JOptionPane.showMessageDialog(this, "El Remito ha sido guardado exitosamente!", "Remito", JOptionPane.INFORMATION_MESSAGE);

            } catch (Exception e) {
                System.out.println(e);
            }


        }
        recepcion = new Recepcion();
//Recepcion(fechaAlta, cargaempaque, contratoSel, detallesrecepcion, operario, re, transporteSel, transportistaSel);
        recepcion.setFechaHoraRecepcion(fechaAlta);
        recepcion.setCargaempaque(cargaempaque);
        recepcion.setContrato(contratoSel);
        recepcion.setDetallerecepcionCollection(detallesrecepcion);
        recepcion.setOperario(operario);
        recepcion.setRemito(re);
        recepcion.setTransporte(transporteSel);
        recepcion.setTransportista(transportistaSel);

        try {
            controladorrecepcion.guardarRecepcion(recepcion);
            System.out.println("creo la recepcion");

        } catch (Exception exep) {
            Logger.getLogger(CargarRemito.class.getName()).log(Level.SEVERE, null, exep);
            System.out.println("No se pudo crear la recepcion");
        }


        //fin validar //fin for
//    PesajeManualEntrada2 abm = new PesajeManualEntrada2(proveedorSel, transporteSel, transportistaSel, producto, detallesrecepcion);
//    abm.setVisible(true);
        BuscarPedidosPendientes bp = new BuscarPedidosPendientes(usuarios);
        bp.setVisible(true);
        this.dispose();

    }
}//GEN-LAST:event_jButtonAceptarActionPerformed
    /*
    //private void jButtonAceptarActionPerformed(java.awt.event.ActionEvent evt) {
    ////////////////VALIDAR FECHA FINCA ES MAYOR A FECHA ACTUAL DEBE SER MENOR O IGUAL
    try {// fecha debe ser menor o igual a la fecha actual;
    String formato = "dd/MM/yyyy";
    Date date = jDateChooserSelectorFecha.getDate();
    SimpleDateFormat sdf = new SimpleDateFormat(formato);
    fechafinca = sdf.format(date);
    int año = jDateChooserSelectorFecha.getCalendar().get(Calendar.YEAR);
    int mes = jDateChooserSelectorFecha.getCalendar().get(Calendar.MONTH) + 1;
    int dia = jDateChooserSelectorFecha.getCalendar().get(Calendar.DAY_OF_MONTH);
    System.out.println("" + dia);
    System.out.println("" + mes);
    System.out.println("" + año);
    } catch (NullPointerException ex) {
    JOptionPane.showMessageDialog(this, "Seleccione una fecha por favor!", "Error!", JOptionPane.INFORMATION_MESSAGE);
    }

    //REMITO
    nroRemito = jTextFieldNroRemito.getText();
    int cantfilas = jTableDetallesContrato.getModel().getRowCount();

    for (int f = 0; f < cantfilas; f++) { // por cada detalle de contrato:
    int fila = f;

    //CONTRATO
    nroContrato = Integer.parseInt(jTableDetallesContrato.getValueAt(fila, 0).toString());
    //ID DETALLECONTRATO
    String nrodtcontr = jTableDetallesContrato.getValueAt(fila, 1).toString();
    idDetCont = Integer.parseInt(nrodtcontr);
    //PRODUCTO
    String product = jTableDetallesContrato.getValueAt(fila, 2).toString();
    System.out.println("producto:  " + jTableDetallesContrato.getValueAt(fila, 2));
    try {
    producto = controladorproducto.buscarProductoNombre(product);
    System.out.println("#### Encontró el producto #####");
    } catch (Exception e) {
    System.out.println("No encontró el producto " + e);
    }
    //CLASIFICACION
    String clasificacion = jTableDetallesContrato.getValueAt(fila, 3).toString();
    System.out.println("clasificacion:  " + jTableDetallesContrato.getValueAt(fila, 3));
    //CUARTEL
    String cuartels = jTableDetallesContrato.getValueAt(fila, 4).toString();
    System.out.println("cuartel:  " + jTableDetallesContrato.getValueAt(fila, 4));
    cuartel = Integer.parseInt(cuartels);
    //CANTIDAD
    String cant = jTableDetallesContrato.getValueAt(fila, 5).toString();
    float cantidad = Float.parseFloat(cant);
    System.out.println("cantidad producto:  " + jTableDetallesContrato.getValueAt(fila, 5));
    ///EMPAQUE
    Object empaque = jTableDetallesContrato.getValueAt(fila, 6);
    String nombreempaque = empaque.toString();
    try {
    empaqueSel = controladorempaque.buscarEmpaqueNombre(nombreempaque);
    System.out.println("#### Encontró el empaque #####");
    } catch (Exception e) {
    System.out.println("No encontró el empaque " + e);
    }
    //CANTIDAD DE EMPAQUE
    Object cantemp = jTableDetallesContrato.getValueAt(fila, 7);
    String cantidademp = cantemp.toString();
    cantidadempaque = Integer.parseInt(cantidademp);
    //VALIDAR DATOS DE ENTRADA

    if (validar(nroRemito, fechafinca, cant, cantidademp) == true) {
    //ACA TENGO UN DETALLE DE CONTRATO SELECCIONADO

    //OJO ACÁ TRAE DIRECTAMENTE DEL DETALLECONTRATO LA CANTIDAD QUE ASIGNA EN EL REMITO!!

    //OJO PORQUE SI LO CARGO MANUALMENTE HABRIA QUE TENER QUE UN CONTRATO PUEDE TENER MAS DE UN DETALLE REMITO

    // SOLO TRAE UN DETALLE DEL CONTRATO SIEMPRE?????
    //   int nroContrato = 0;

    nroContrato = contratoSel.getNumeroContrato();

    Integer i = (Integer) jTableDetallesContrato.getValueAt(fila, 0);
    Contrato c = new Contrato(i);

    nroRemito = jTextFieldNroRemito.getText();

    fechaAlta = Validador.getInstance().obtenerFechaSistema();
    ///////////
    //DETALLE REMITO
    //////////
    Detalleremito dr = new Detalleremito(producto, cantidad, remito);
    System.out.println("boton agregar antes de llamar alcontrolador para que guarde el detalle");
    controladordetremito.guardarDetalleremito(dr);

    System.out.println("guardó detalle remito");
    System.out.println("boton agregar ddespues de guardar detalle");

    detallesrem.add(dr);

    //        Remito re = new Remito(nroRemito, fechafinca, transporteSel, contratoSel, proveedorSel, detallesrem);
    //        controladoremito.guardarRemito(re);
    //        System.out.println("#################  creo remito#####################");
    //
    //        JOptionPane.showMessageDialog(this, "El Remito ha sido guardado exitosamente!", "Remito", JOptionPane.INFORMATION_MESSAGE);

    System.out.println("########################################");
    System.out.println("aca comienza la recepcion");
    System.out.println("########################################");

    try {
    estadoespera = controladorestadoespera.buscarEstadoesperaNombre("enEsperaControlCalidad");

    } catch (Exception e) {
    System.out.println("No encontró el estado espera");
    }

    Detallerecepcion_1 drecep = new Detallerecepcion_1(cuartel, cantidadempaque, producto, recepcion, empaqueSel, null, null, null, estadoespera, null, null);
    controladordetrecepcion.guardarDetallerecepcion(drecep);

    detallesrecepcion.add(drecep);
    ////
    System.out.println("########################################");
    System.out.println("aca comienza carga empaque");
    System.out.println("modificar el operario para que sea el que trae loggeado");
    System.out.println("modificar el estadoespera");
    System.out.println("########################################");

    try {
    operario = controladoroperario.buscarOperario_X_idOperario(1);
    } catch (Exception e) {
    System.out.println("No encontró el operario");
    }
    System.out.println(fechaAlta);
    System.out.println(cantidadempaque);
    System.out.println(operario);
    System.out.println(transporteSel);
    System.out.println(empaqueSel);

    cargaempaque = new Cargaempaque(fechaAlta, cantidadempaque, operario, transporteSel, empaqueSel);

    try {
    controladorcargaempaque.guardarCargaEmpaque(cargaempaque);


    } catch (Exception e) {
    System.out.println("no pudo crear carga empaque " + e);


    }
    ////////

    // controladordetrecepcion.guardarDetallerecepcion(drecep);

    Object estetransportista = jComboBoxTransportista.getSelectedItem();
    String transportista = estetransportista.toString();
    String tipodoc = transportista.substring(0, 3);

    System.out.println("tipodoc " + tipodoc);

    String nrodoc = transportista.substring(4, 12);
    System.out.println("nrodoc " + nrodoc);
    //int nombretransportista = Integer.parseInt(estetransportista.toString());//

    int numero = Integer.parseInt(nrodoc);

    try {
    transportistaSel = controladortransportista.buscarTransportista_X_nroDocumento(numero);
    System.out.println("transportistaSel " + transportistaSel);
    } catch (Exception e) {
    System.out.println("No encontro el transportista");

    } //ACÁ DEBERIA BUSCAR TAMBIEN EL TIPO DE DOCUMENTO y ver si es el mismo objeto que tiene el numero
    // y si es el mismo asignarlo
    //        try {
    //              transportistaSel = controladortransportista.buscarTransportista_X_tipoDocumento(Long.parseLong( ));
    //        } catch (Exception e) {
    //        }

    //            recepcion = new Recepcion(fechaAlta, cargaempaque, contratoSel, detallesrecepcion, operario, re, transporteSel, transportistaSel);
    //            try {
    //                controladorrecepcion.guardarRecepcion(recepcion);
    //                System.out.println("creo la recepcion");
    //            } catch (IllegalOrphanException ex) {
    //                Logger.getLogger(CargarRemito.class.getName()).log(Level.SEVERE, null, ex);
    //                System.out.println(
    //                        "No se pudo crear la recepcion");
    //            }
    ////////////////////////
    //
    //    CAMBIAR EL ESTADO DEL TRANSPORTE A EN ESPERA CONTTROL DE CALIDAD
    try {
    estadoespera = controladorestadoespera.buscarEstadoesperaNombre("enEsperaControlCalidad");
    System.out.println("encontró el estado espera enEsperaControlCalidad");
    } catch (Exception e) {
    System.out.println("No trajo el estado transporte");
    }
    transporteSel.setIdEstadoEspera(estadoespera);
    ///////////////
    /////////////et
    //            //cambiarEstadoDetContrato();



    }//fin validar datos entrada
    // }//fin del for de c
    }// fin del for del f

    System.out.println("#################  creo remito encabezado #####################");
    Remito re = new Remito(nroRemito, fechafinca, transporteSel, contratoSel, proveedorSel, detallesrem);
    controladoremito.guardarRemito(re);
    JOptionPane.showMessageDialog(this, "El Remito ha sido guardado exitosamente!", "Remito", JOptionPane.INFORMATION_MESSAGE);
    System.out.println("#################  fin crear remito encabezado #####################");
    System.out.println("");
    System.out.println("#################  creo recepcion encabezado #####################");

    recepcion = new Recepcion(fechaAlta, cargaempaque, contratoSel, detallesrecepcion, operario, re, transporteSel, transportistaSel);
    try {
    controladorrecepcion.guardarRecepcion(recepcion);
    System.out.println("creo la recepcion");
    } catch (IllegalOrphanException ex) {
    Logger.getLogger(CargarRemito.class.getName()).log(Level.SEVERE, null, ex);
    System.out.println( "No se pudo crear la recepcion");
    }
    System.out.println("#################  fin recepcion encabezado fin codigo #####################");
    System.out.println("#################  fin codigo #####################");

    //
    PesajeManualEntrada2 abm = new PesajeManualEntrada2(proveedorSel, transporteSel, transportistaSel, producto, detallesrecepcion);
    abm.setVisible(true);

    //  private void jButtonAceptarActionPerformed(java.awt.event.ActionEvent evt) {
    ////////////////VALIDAR FECHA FINCA ES MAYOR A FECHA ACTUAL DEBE SER MENOR O IGUAL
    try {// fecha debe ser menor o igual a la fecha actual;
    String formato = "dd/MM/yyyy";
    Date date = jDateChooserSelectorFecha.getDate();
    SimpleDateFormat sdf = new SimpleDateFormat(formato);
    fechafinca = sdf.format(date);
    int año = jDateChooserSelectorFecha.getCalendar().get(Calendar.YEAR);
    int mes = jDateChooserSelectorFecha.getCalendar().get(Calendar.MONTH) + 1;
    int dia = jDateChooserSelectorFecha.getCalendar().get(Calendar.DAY_OF_MONTH);
    System.out.println("" + dia);
    System.out.println("" + mes);
    System.out.println("" + año);
    } catch (NullPointerException ex) {
    JOptionPane.showMessageDialog(this, "Seleccione una fecha por favor!", "Error!", JOptionPane.INFORMATION_MESSAGE);
    } //REMITO

    nroRemito = jTextFieldNroRemito.getText();

    int cantfilas = jTableDetallesContrato.getModel().getRowCount();
    //
    //
    for (int f = 0; f < cantfilas; f++) {

    int fila = f;


    //CONTRATO
    nroContrato = Integer.parseInt(jTableDetallesContrato.getValueAt(fila, 0).toString());
    //ID DETALLECONTRATO
    String nrodtcontr = jTableDetallesContrato.getValueAt(fila, 1).toString();
    idDetCont = Integer.parseInt(nrodtcontr);
    //PRODUCTO
    String product = jTableDetallesContrato.getValueAt(fila, 2).toString();
    System.out.println("producto:  " + jTableDetallesContrato.getValueAt(fila, 2));
    try {
    producto = controladorproducto.buscarProductoNombre(product);
    System.out.println("#### Encontró el producto #####");
    } catch (Exception e) {
    System.out.println("No encontró el producto " + e);
    }
    //CLASIFICACION
    String clasificacion = jTableDetallesContrato.getValueAt(fila, 3).toString();
    System.out.println("clasificacion:  " + jTableDetallesContrato.getValueAt(fila, 3));
    //CUARTEL
    String cuartels = jTableDetallesContrato.getValueAt(fila, 4).toString();
    System.out.println("cuartel:  " + jTableDetallesContrato.getValueAt(fila, 4));
    cuartel = Integer.parseInt(cuartels);
    //CANTIDAD
    String cant = jTableDetallesContrato.getValueAt(fila, 5).toString();
    float cantidad = Float.parseFloat(cant);
    System.out.println("cantidad producto:  " + jTableDetallesContrato.getValueAt(fila, 5));
    ///EMPAQUE
    Object empaque = jTableDetallesContrato.getValueAt(fila, 6);
    String nombreempaque = empaque.toString();
    try {
    empaqueSel = controladorempaque.buscarEmpaqueNombre(nombreempaque);
    System.out.println("#### Encontró el empaque #####");
    } catch (Exception e) {
    System.out.println("No encontró el empaque " + e);
    }
    //CANTIDAD DE EMPAQUE
    Object cantemp = jTableDetallesContrato.getValueAt(fila, 7);
    String cantidademp = cantemp.toString();
    cantidadempaque = Integer.parseInt(cantidademp);
    //VALIDAR DATOS DE ENTRADA

    if (validar(nroRemito, fechafinca, cant, cantidademp) == true) {
    //ACA TENGO UN DETALLE DE CONTRATO SELECCIONADO

    //OJO ACÁ TRAE DIRECTAMENTE DEL DETALLECONTRATO LA CANTIDAD QUE ASIGNA EN EL REMITO!!

    //OJO PORQUE SI LO CARGO MANUALMENTE HABRIA QUE TENER QUE UN CONTRATO PUEDE TENER MAS DE UN DETALLE REMITO

    // SOLO TRAE UN DETALLE DEL CONTRATO SIEMPRE?????
    //   int nroContrato = 0;

    nroContrato = contratoSel.getNumeroContrato();

    Integer i = (Integer) jTableDetallesContrato.getValueAt(fila, 0);
    Contrato c = new Contrato(i);

    nroRemito = jTextFieldNroRemito.getText();

    fechaAlta = Validador.getInstance().obtenerFechaSistema();
    ///////////
    //DETALLE REMITO
    //////////
    Detalleremito dr = new Detalleremito(producto, cantidad, remito);
    System.out.println("boton agregar antes de llamar alcontrolador para que guarde el detalle");
    controladordetremito.guardarDetalleremito(dr);

    System.out.println("guardó detalle remito");
    System.out.println("boton agregar ddespues de guardar detalle");

    detallesrem.add(dr);

    //        Remito re = new Remito(nroRemito, fechafinca, transporteSel, contratoSel, proveedorSel, detallesrem);
    //        controladoremito.guardarRemito(re);
    //        System.out.println("#################  creo remito#####################");
    //
    //        JOptionPane.showMessageDialog(this, "El Remito ha sido guardado exitosamente!", "Remito", JOptionPane.INFORMATION_MESSAGE);

    System.out.println("########################################");
    System.out.println("aca comienza la recepcion");
    System.out.println("########################################");

    try {
    estadoespera = controladorestadoespera.buscarEstadoesperaNombre("enEsperaControlCalidad");

    } catch (Exception e) {
    System.out.println("No encontró el estado espera");
    }

    Detallerecepcion_1 drecep = new Detallerecepcion_1(cuartel, cantidadempaque, producto, recepcion, empaqueSel, null, null, null, estadoespera);
    controladordetrecepcion.guardarDetallerecepcion(drecep);

    detallesrecepcion.add(drecep);
    ////
    System.out.println("########################################");
    System.out.println("aca comienza carga empaque");
    System.out.println("modificar el operario para que sea el que trae loggeado");
    System.out.println("modificar el estadoespera");
    System.out.println("########################################");

    try {
    operario = controladoroperario.buscarOperario_X_idOperario(1);
    } catch (Exception e) {
    System.out.println("No encontró el operario");
    }
    System.out.println(fechaAlta);
    System.out.println(cantidadempaque);
    System.out.println(operario);
    System.out.println(transporteSel);
    System.out.println(empaqueSel);

    cargaempaque = new Cargaempaque(fechaAlta, cantidadempaque, operario, transporteSel, empaqueSel);

    try {
    controladorcargaempaque.guardarCargaEmpaque(cargaempaque);


    } catch (Exception e) {
    System.out.println("no pudo crear carga empaque " + e);


    }
    ////////

    // controladordetrecepcion.guardarDetallerecepcion(drecep);

    Object estetransportista = jComboBoxTransportista.getSelectedItem();
    String transportista = estetransportista.toString();
    String tipodoc = transportista.substring(0, 3);

    System.out.println("tipodoc " + tipodoc);

    String nrodoc = transportista.substring(4, 12);
    System.out.println("nrodoc " + nrodoc);
    //int nombretransportista = Integer.parseInt(estetransportista.toString());//

    int numero = Integer.parseInt(nrodoc);

    try {
    transportistaSel = controladortransportista.buscarTransportista_X_nroDocumento(numero);
    System.out.println("transportistaSel " + transportistaSel);
    } catch (Exception e) {
    System.out.println("No encontro el transportista");

    } //ACÁ DEBERIA BUSCAR TAMBIEN EL TIPO DE DOCUMENTO y ver si es el mismo objeto que tiene el numero
    // y si es el mismo asignarlo
    //        try {
    //              transportistaSel = controladortransportista.buscarTransportista_X_tipoDocumento(Long.parseLong( ));
    //        } catch (Exception e) {
    //        }

    //            recepcion = new Recepcion(fechaAlta, cargaempaque, contratoSel, detallesrecepcion, operario, re, transporteSel, transportistaSel);
    //            try {
    //                controladorrecepcion.guardarRecepcion(recepcion);
    //                System.out.println("creo la recepcion");
    //            } catch (IllegalOrphanException ex) {
    //                Logger.getLogger(CargarRemito.class.getName()).log(Level.SEVERE, null, ex);
    //                System.out.println(
    //                        "No se pudo crear la recepcion");
    //            }
    ////////////////////////
    //
    //    CAMBIAR EL ESTADO DEL TRANSPORTE A EN ESPERA CONTTROL DE CALIDAD
    try {
    estadoespera = controladorestadoespera.buscarEstadoesperaNombre("enEsperaControlCalidad");
    System.out.println("encontró el estado espera enEsperaControlCalidad");
    } catch (Exception e) {
    System.out.println("No trajo el estado transporte");
    }
    transporteSel.setIdEstadoEspera(estadoespera);
    ///////////////
    /////////////et
    //            //cambiarEstadoDetContrato();



    //        }
    //        // }//fin del for de c
    //    }// fin del for del f

    System.out.println("#################  creo remito encabezado #####################");
    Remito re = new Remito(nroRemito, fechafinca, transporteSel, contratoSel, proveedorSel, detallesrem);
    controladoremito.guardarRemito(re);
    JOptionPane.showMessageDialog(this, "El Remito ha sido guardado exitosamente!", "Remito", JOptionPane.INFORMATION_MESSAGE);
    System.out.println("#################  fin crear remito encabezado #####################");
    System.out.println("");
    System.out.println("#################  creo recepcion encabezado #####################");
    //recepcion = new Recepcion(fechaAlta, cargaempaque, contratoSel, detallesrecepcion, operario, re, transporteSel, transportistaSel);
    recepcion = new Recepcion();
    recepcion.setDetallerecepcionCollection(detallesrecepcion);
    recepcion.setFechaHoraRecepcion(fechaAlta);
    recepcion.setIdCargaEmpaque(cargaempaque);
    recepcion.setNumeroContrato(contratoSel);
    recepcion.setIdOperario(operario);
    recepcion.setIdRemito(re);
    recepcion.setIdTransporte(transporteSel);
    recepcion.setIdTransportista(transportistaSel);
    try {
    controladorrecepcion.guardarRecepcion(recepcion);
    System.out.println("creo la recepcion");
    } catch (IllegalOrphanException ex) {
    Logger.getLogger(CargarRemito.class.getName()).log(Level.SEVERE, null, ex);
    System.out.println(
    "No se pudo crear la recepcion");
    }
    System.out.println("#################  fin recepcion encabezado fin codigo #####################");

    // // CAMBIAR EL ESTADO DEL TRANSPORTE A EN ESPERA CONTTROL DE CALIDAD
    //    try {
    //        et = controladorestadotransp.buscarEstadoTransporteNombre("enEsperaControlCalidad");
    //        System.out.println("encontró el transporte");
    //    } catch (Exception e) {
    //        System.out.println("No trajo el estado transporte");
    //    }
    //    transporteSel.setIdestadotransporte(et);
    //    System.out.println("cambio el estado de transporte");

    System.out.println("#################  fin codigo #####################");
    //QUE VUELE LA PANTALLA;

    //   System.out.println("proveedorSel "+proveedorSel);
    //   System.out.println("proveedorSel "+ transporteSel);
    //   System.out.println("proveedorSel "+ transportistaSel);
    //   System.out.println("proveedorSel "+ producto);
    //   System.out.println("proveedorSel" + detallesrecepcion);
    //
    //
    //
    PesajeManualEntrada2 abm = new PesajeManualEntrada2(proveedorSel, transporteSel, transportistaSel, producto, detallesrecepcion);
    abm.setVisible(true);


    }*/
private void jComboBoxTransportistaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jComboBoxTransportistaActionPerformed
    //ACA MUESTRA EN EL COMBO EL TIPO DE DOCUMENTO Y EL DOCUMENTO ENTONCES DEBO SEPARAR CON SUBCADENAS Y VER QEU 
    //COINCIDA EL TIPO CON EL NUMERO PARA UNN TRANSPORTISTA
    // transportistaSel = null;
    Object estetransportista = jComboBoxTransportista.getSelectedItem();
    String transportista = estetransportista.toString();
    String tipodoc = transportista.substring(0, 3);

    System.out.println("tipodoc " + tipodoc);

    String nrodoc = transportista.substring(3, 12);
    System.out.println("nrodoc " + nrodoc);
    //int nombretransportista = Integer.parseInt(estetransportista.toString());//



    try {
        //  transportistaSel = controladortransportista.buscarTransportista_X_nroDocumento(nombretransportista);
    } catch (Exception e) {
    }
}//GEN-LAST:event_jComboBoxTransportistaActionPerformed

private void jTableDetallesContratoMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jTableDetallesContratoMouseClicked
}//GEN-LAST:event_jTableDetallesContratoMouseClicked

private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton3ActionPerformed
    this.dispose();    // TODO add your handling code here:
}//GEN-LAST:event_jButton3ActionPerformed

private void jComboBoxTransporteMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jComboBoxTransporteMouseClicked

    Object estetransporte = jComboBoxTransporte.getSelectedItem();
    String nombretransporte = estetransporte.toString();//nombre del pais


    try {
        transporteSel = controladortransporte.buscarTransportePatente(nombretransporte);


    } catch (Exception e) {
    }    // TODO add your handling code here:
    float tara = transporteSel.getTaraTransporte();
    System.out.println("tara clicked" + tara);
    jTextFieldTaraTransporte.setText(String.valueOf(tara));


    if (transporteSel.getAcoplado() == 1) {
        float taraAcoplado = transporteSel.getTaraAcoplado();
        //jTextFieldTaraAcoplado.

//setText(String.valueOf(taraAcoplado));


    }




}//GEN-LAST:event_jComboBoxTransporteMouseClicked

private void jComboBoxTransporteMousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jComboBoxTransporteMousePressed
    Object estetransporte = jComboBoxTransporte.getSelectedItem();
    String nombretransporte = estetransporte.toString();//nombre del pais


    try {
        transporteSel = controladortransporte.buscarTransportePatente(nombretransporte);


    } catch (Exception e) {
    }    // TODO add your handling code here:
    float tara = transporteSel.getTaraTransporte();
    System.out.println("tara pressed" + tara);
    jTextFieldTaraTransporte.setText(String.valueOf(tara));


    if (transporteSel.getAcoplado() == 1) {
        float taraAcoplado = transporteSel.getTaraAcoplado();
//        jTextFieldTaraAcoplado.

//setText(String.valueOf(taraAcoplado));


    }
}//GEN-LAST:event_jComboBoxTransporteMousePressed

private void jButtonAltaTransporteActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonAltaTransporteActionPerformed
    this.dispose();
    ABMTransporte abm = new ABMTransporte(usuarios);
    abm.setVisible(true);

}//GEN-LAST:event_jButtonAltaTransporteActionPerformed

private void jButtonAltaTransportistaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonAltaTransportistaActionPerformed
    this.dispose();
    ABMTransportista abm = new ABMTransportista(usuarios);
    abm.setVisible(true);
    BuscarPedidosPendientes bp = new BuscarPedidosPendientes(usuarios);
}//GEN-LAST:event_jButtonAltaTransportistaActionPerformed
private void jComboBoxTransporteFocusGained(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_jComboBoxTransporteFocusGained
////    // TODO add your handling code here:
//    //jComboBoxTransporte.removeAllItems();
//System.out.println("FOCUS GAINED ");
//        try {
//            listatransporte = controladortransporte.buscarTodosTransporte();
//             System.out.println("cargo combo transporte");
//        } catch (Exception e) {
//        }
//        jComboBoxTransporte.removeAllItems();
//        for (int i = 0; i < listatransporte.size(); i++) {
//            Vector fila = new Vector();
//            Transporte trans = (Transporte) listatransporte.get(i);
//            fila.add(trans.getPatenteTransporte());
//            jComboBoxTransporte.addItem(fila.get(0));
//
//
//        }
}//GEN-LAST:event_jComboBoxTransporteFocusGained
//////////////////LISTAR///////////////
//Ojo qeu no verifica bien el telefono. da error cuando se ingresa una letra.
    //razon, nroPrevSocial,  apellido, nombre, nroIB, nroInv, pais,  provincia,localidad, telefono1, telefono2, fechaAlta, fechaBaja

    private boolean verificar(String razon, String nroPrevSocial, String apellido, String nombre, String nroIB, String nroInv, String pais, String provincia, String localidad, String telefono1, String telefono2, String direccion) {

        boolean ver = false;





        if (razon.equals("") || nroPrevSocial.equals("") || apellido.equals("") || nombre.equals("") || nroIB.equals("") || nroInv.equals("") || pais.equals("") || provincia.equals("") || localidad.equals("") || telefono1.equals("") || telefono2.equals("") || direccion.equals("")) {
            JOptionPane.showMessageDialog(this, "Por favor llene todos los campos!!!", "Error", JOptionPane.ERROR_MESSAGE);





        } else if (!validador.getInstance().soloContieneLetrasYNumerosYEspacios(razon)) {
            JOptionPane.showMessageDialog(this, "Apellido invalido!!!", "Error", JOptionPane.ERROR_MESSAGE);





        } else if (!validador.getInstance().soloContieneLetrasYEspacios(apellido)) {
            JOptionPane.showMessageDialog(this, "Nombre invalido!!!", "Error", JOptionPane.ERROR_MESSAGE);





        } else if (!validador.getInstance().soloContieneLetrasYEspacios(nombre)) {
            JOptionPane.showMessageDialog(this, "Nombre invalido!!!", "Error", JOptionPane.ERROR_MESSAGE);





        } else if (!validador.getInstance().soloContieneNumerosYGuiones(nroIB)) {
            JOptionPane.showMessageDialog(this, "Número de Ingresos Brutos invalido!!!", "Error", JOptionPane.ERROR_MESSAGE);





        } else if (!validador.getInstance().soloContieneNumerosYGuiones(nroInv)) {
            JOptionPane.showMessageDialog(this, "Número de Ingresos Brutos invalido!!!", "Error", JOptionPane.ERROR_MESSAGE);





        } else if (!validador.getInstance().soloContieneLetrasYNumerosYEspacios(direccion)) {

            JOptionPane.showMessageDialog(this, "Dirección invalido!!!", "Error", JOptionPane.ERROR_MESSAGE);





        } else if (!validador.getInstance().esTelefonoValido(telefono1)) {
            JOptionPane.showMessageDialog(this, "El valor ingresado para telefono1 es incorrecto!!!", "Error", JOptionPane.ERROR_MESSAGE);





        } else if (!validador.getInstance().esTelefonoValido(telefono2)) {
            JOptionPane.showMessageDialog(this, "El valor ingresado para telefono2 es incorrecto!!!", "Error", JOptionPane.ERROR_MESSAGE);





        } else {
            ver = true;





        }
        return ver;





    }
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.persistence.EntityManager GestorPesajeJpaPU2EntityManager;
    private java.util.List<Entidades.Empaque> empaqueList;
    private javax.persistence.Query empaqueQuery;
    private javax.swing.JButton jButton3;
    private javax.swing.JButton jButtonAceptar;
    private javax.swing.JButton jButtonAltaTransporte;
    private javax.swing.JButton jButtonAltaTransportista;
    private javax.swing.JComboBox jComboBoxTransporte;
    private javax.swing.JComboBox jComboBoxTransportista;
    private com.toedter.calendar.JDateChooser jDateChooserSelectorFecha;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel20;
    private javax.swing.JLabel jLabel22;
    private javax.swing.JLabel jLabel23;
    private javax.swing.JLabel jLabel8;
    private javax.swing.JLabel jLabel9;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JPanel jPanel3;
    private javax.swing.JPanel jPanel4;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTabbedPane jTabbedPane1;
    private javax.swing.JTable jTableDetallesContrato;
    private javax.swing.JTextField jTextFieldNroRemito;
    private javax.swing.JTextField jTextFieldTaraTransporte;
    private javax.swing.JTextField jTextFieldUsuario;
    private javax.swing.JTextField jtextFielcuilpropietario;
    private javax.swing.JTextField jtextFieldpropietariouva;
    private java.util.List<Entidades.Transporte> transporteList;
    private javax.persistence.Query transporteQuery;
    // End of variables declaration//GEN-END:variables

    private boolean verificar(String cuit) {
        boolean ver = false;


        if (cuit.equals("")) {
            JOptionPane.showMessageDialog(this, "Por favor ingrese el cuil del operario!!!", "Error", JOptionPane.ERROR_MESSAGE);


        } else if (!validador.getInstance().soloContieneNumerosYGuiones(cuit)) {
            JOptionPane.showMessageDialog(this, "Cuil incorrecto: Ingrese números y guiones para cuil!!!", "Error", JOptionPane.ERROR_MESSAGE);



        } else if (!repetidoProveedor(cuit) == true) {
            JOptionPane.showMessageDialog(this, "Error el numero de cuil pertenece a otro operario !!!", "Error", JOptionPane.ERROR_MESSAGE);


        } else {
            ver = true;



        }

        return ver;




    }

    private boolean repetidoProveedor(String cuit) {
        boolean estarepetido = false;
        Proveedor operarc = new Proveedor();


        try {
            operarc = controladorprovee.buscarProveedorCuit(cuit);
            estarepetido = false;
            System.out.println("Encontró el cuil en un operario");



        } catch (Exception e) {
            System.out.println("NO está repetido el cuil en otro operario");
            estarepetido = true;



        }
        return estarepetido;





    }

    public void cargarComboTransportes() {

        try {
            listatransporte = controladortransporte.buscarTodosTransporte();



        } catch (Exception e) {
        }
        jComboBoxTransporte.removeAllItems();


        for (int i = 0; i
                < listatransporte.size(); i++) {
            Vector fila = new Vector();
            Transporte trans = (Transporte) listatransporte.get(i);
            fila.add(trans.getPatenteTransporte());
            jComboBoxTransporte.addItem(fila.get(0));


        }
    }

    private void cargarComboEmpaque() {
//        System.out.println("cargo combo empaque");
//        try {
//            listaempaque = controladorempaque.buscarTodosEmpaque();
//            System.out.println("tamaño de la lista de empaque " + listaempaque.size());
//        } catch (Exception e) {
//        }
//        jComboBoxEmpaque.removeAllItems();
//        for (int i = 0; i
//                < listaempaque.size(); i++) {
//            Vector fila = new Vector();
//            Empaque empaq = (Empaque) listaempaque.get(i);
//            fila.add(empaq.getNombreEmpaque());
//            jComboBoxEmpaque.addItem(fila.get(0));
//
//
//        }
    }

    public void cargarComboTransportistas() {
        jComboBoxTransportista.removeAllItems();
        System.out.println("cargo combo transportistas");


        try {
            listaTransportista = controladortransportista.buscarTodosTransportista();


        } catch (Exception e) {
        }
        jComboBoxTransportista.removeAllItems();


        for (int i = 0; i
                < listaTransportista.size(); i++) {
            Vector fila = new Vector();
            Transportista transportista = (Transportista) listaTransportista.get(i);
            fila.add(transportista.getTipodocumento().getNombretipo() + ":" + transportista.getNroDocTransportista());
            jComboBoxTransportista.addItem(fila.get(0));



        }
    }

    private boolean validar(String nroRemito, String fechafinca, String cantidadproducto, String cantemp) {
        boolean ver = false;



        if (nroRemito.equals("") || fechafinca.equals("") || cantidadproducto.equals("") || cantemp.equals("")) {
            JOptionPane.showMessageDialog(this, "Por favor complete todos los campos!!!", "Error", JOptionPane.ERROR_MESSAGE);



        } else if (!validador.getInstance().soloContieneNumerosYGuiones(nroRemito)) {
            JOptionPane.showMessageDialog(this, "Número de remito incorrecto: Ingrese números y guiones para número de remito!!!", "Error", JOptionPane.ERROR_MESSAGE);
//        } else if (!repetidoProveedor(cuit) == true) {
//            JOptionPane.showMessageDialog(this, "Error el numero de cuil pertenece a otro operario !!!", "Error", JOptionPane.ERROR_MESSAGE);

//        } else if (!validador.getInstance().soloContieneNumeros(fechafinca)) {
//            JOptionPane.showMessageDialog(this, "fecha incorrecta: Ingrese números !!!", "Error", JOptionPane.ERROR_MESSAGE);



        } else if (!validador.getInstance().soloContieneNumerosYPuntos(cantidadproducto)) {
            JOptionPane.showMessageDialog(this, "Cantidad Producto incorrecto: Ingrese números para cantidad de producto!!!", "Error", JOptionPane.ERROR_MESSAGE);



        } else if (!validador.getInstance().soloContieneNumeros(cantemp)) {
            JOptionPane.showMessageDialog(this, "Cantidad de empaque incorrecto: Ingrese sólo números para cantidad de empaque!!!", "Error", JOptionPane.ERROR_MESSAGE);


        } else {
            ver = true;


        }
        return ver;





    }

    private void cambiarEstadoDetContrato() {
//        //      ACTUALIZAR EL ESTADO DEL DETALLE CONTRATO SI ESTÁ COMPLETO A COMPLETO SINO QUEDA IGUAL PENDIENTE
//        //TRAER TODOS LOS REMITOS ASOCIADOS AL CONTRATO Y SUMAR LAS CANTIDADES DE PRODUCTO SI ES IGUAL A LA CANTIDA
//        //DE DETALLE CONTRATO DE ESE PRODUCTO
//        try {
//            estadoContFaltante = controladorestadocontrato.buscarEstadocontratoNombre("FALTANTE");
//            System.out.println("contrato con estado faltante");
//
//
//        } catch (Exception e) {
//            System.out.println(e);
//
//
//        }
//        try {
//            estadoContCompleto = controladorestadocontrato.buscarEstadocontratoNombre("COMPLETO");
//            System.out.println("contrato con estado completo");
//
//
//        } catch (Exception e) {
//            System.out.println(e);
//
//
//        }
//
//
//        float sumatoria = 0;
//        listaremitoc = (List) contratoSel.getRemitoCollection();
//        Detallecontrato detcont = new Detallecontrato();
//
//
//        try {
//            detcont = controladordetallecontr.buscarDetallecontrato_X_idDetallecontrato(idDetCont);
//            System.out.println("encontro el detall contrato por id dtall contrato");
//
//
//        } catch (Exception e) {
//            System.out.println(e);
//            System.out.println("no ntontró un dtall contrato ");
//
//
//        }
//
//        for (int r = 0; r < listaremitoc.size(); r++) {
//            Remito rem = listaremitoc.get(r);
//            listadetrem = (List) rem.getDetalleremitoCollection();
//
//
//            for (int s = 0; s < listadetrem.size(); s++) {
//                Detalleremito detallerem = listadetrem.get(s);
//                Producto pro = detallerem.getProducto();
//
//
//                if (pro == producto) {
//                    float cantidadrem = detallerem.getCantidadProducto();
//                    sumatoria = sumatoria + cantidadrem;
//
//
//                }
//            }
//        }
//        if ((detcont.getCantidad() > sumatoria) && (jCheckBoxfaltante.isSelected())) {
//            int rta = JOptionPane.showConfirmDialog(this, "Esta seguro de que desea que el contrato quede en estado faltante?", "C", JOptionPane.OK_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE);
//
//
//            if (rta == 0) {
//                try {
//                    //mensaje seguro que el contrato quedará en estado faltante???
//                    //si
//                    detcont.setEstadocontrato(estadoContFaltante);//OJO PORQUE PUEDE SER FALTANTE
//                    //no no hacer nada que quede pendiente como estaba
//                    System.out.println("coloca el estado d contrato como faltant");
//                    JOptionPane.showMessageDialog(this, "Se cambió el estado del contrato a FALTANTE!", "Contratos", JOptionPane.INFORMATION_MESSAGE);
//                } catch (Exception ex) {
//                    System.out.println(ex);
//                    JOptionPane.showMessageDialog(this, "No se puede puede cambiar el estado del contrato!", "¡Error!", JOptionPane.ERROR_MESSAGE);
//                }
//            }
//        } else {
//            detcont.setEstadocontrato(estadoContCompleto);
//            JOptionPane.showMessageDialog(this, "Se cambió el estado del contrato a COMPLETO!", "Contratos", JOptionPane.INFORMATION_MESSAGE);
//        }
    }

    private void cargarEmpaque() {
//        try {
//            listaempaque = controladorempaque.buscarTodosEmpaque();
///        } catch (Exception e) {
//        }
//        jComboBoxEmpaque.removeAllItems();
//        for (int i = 0; i
//                < listaempaque.size(); i++) {
//            Vector fila = new Vector();
//            Empaque empaque = (Empaque) listaempaque.get(i);
//            fila.add(empaque.getNombreEmpaque());
//            jComboBoxEmpaque.addItem(fila.get(0));
//        }
    }

    private void mostrarTaraTransporte(Float taraTransporte) {
        float tara = transporteSel.getTaraTransporte();
        jTextFieldTaraTransporte.setText(String.valueOf(tara));




        if (transporteSel.getAcoplado() == 1) {
            float taraAcoplado = transporteSel.getTaraAcoplado();
//            jTextFieldTaraAcoplado.

//setText(String.valueOf(taraAcoplado));


        }
    }
}
